package com.example.apptodo;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import db.SimpleDatabaseHelper;

public class MainActivity extends Activity {
	
	TodoAdapter adapter = null;

	@Override
    protected void onCreate(Bundle savedInstanceState) {
		Log.i("MainActivity", "onCreate");
		
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //	ListView用のAdapterを生成する
        adapter = new TodoAdapter(
        		this, 
        		null, 
        		R.layout.list_item);
        //	ListViewにAdapterを設定する
        ListView listView = (ListView)findViewById(R.id.listView);
        listView.setAdapter(adapter);
        //	ListViewにItemClickListenerを設定する
        listView.setOnItemClickListener(new MyListener());
    }
    
    @Override
	protected void onResume() {
		Log.i("MainActivity", "onResume");
		
		super.onResume();
		
		//	Adapterのデータをクリアする
		adapter.clear();
		//	テーブルから全件読み込んでAdapterに追加する
		SimpleDatabaseHelper helper = new SimpleDatabaseHelper(this);
		SQLiteDatabase db = helper.getReadableDatabase();
		
		String[] cols = {"id", "action"};	//	選択する列名
											//	検索を実行
		Cursor cs = db.query("todos", cols, null, null, null, null, "id");
											//	検索結果の先頭へ
		boolean hasRow = cs.moveToFirst();
											//	検索結果を行ごとに処理する
		while (hasRow) {
			//	Todoオブジェクトを生成する
			Todo todo = new Todo();
			todo.setId(cs.getLong(0));
			todo.setAction(cs.getString(1));
			//	Adapterのデータに追加する
			adapter.add(todo);
			//	検索結果の次の行へ移動する
			hasRow = cs.moveToNext();
		}
		//	Adapterにデータの変更が発生したことを通知する
		adapter.notifyDataSetChanged();
	}
    /**
     * 追加ボタンがクリックされると呼び出される
     * @param view	追加ボタン
     */
    public void btnAdd_onClick(View view) {
		Log.i("MainActivity", "btnAdd_onClick");
		
    	//	AddActivityを起動するためのIntentを生成
    	Intent i = new Intent(
    			this, 
    			com.example.apptodo.AddActivity.class);
    	//	AddActivityを起動
    	this.startActivity(i);
    }
    
    class MyListener implements OnItemClickListener {

		@Override
		public void onItemClick(
				AdapterView<?> parent, 
				View view, 
				int position,
				long id) {
			//	選択された情報を取得する
			Todo todo = (Todo)adapter.getItem(position);
			//	編集画面へ遷移する
			Intent i = new Intent(
					getApplicationContext(), 
					com.example.apptodo.EditActivity.class);
			//	選択された情報を渡す
			i.putExtra("todo", todo);
			
			startActivity(i);
		}
    }
 }
